const express = require('express')
// 导入mongoose模块
const mongoose = require('mongoose')

// 数据库配置
const dbConfig = require('./config/database')

const app = express()
app.listen(8080)

console.log(dbConfig)

// 连接mongodb服务器
// 协议://ip地址或域名:端口号/数据库名
// 高版本兼容写
mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true, useUnifiedTopology: true })

// 定义Schema
var userSchema = new mongoose.Schema({
  username: {
    type: String,
    minlength: 2,
    required: true
  },
  password: {
    type: String,
    required: true,
    minlength: 2
  },
  email: String,
  age: {
    type: Number,
    default: 10
  },
  hobbies: [String]
})

// 定义操作的数据集合的模型对象
// 参数1：模型名称，如果没有参数3，则数据库中集合名称以参数1的复数形命名  users
// 参数2：定义集合的结构 schema
// 参数3：指定数据表中的集合的名称，可以省略，省略以参数1名称复数形式命名
// 返回的就是操作集合对象的模型，它可以进行curd操作
const userModel = mongoose.model('User', userSchema, 'admin')


// 添加数据操作
// 返回的是promise对象 .then
/* userModel.insertMany({
  username: 'user3',
  password: 'user3',
  email: 'aa@aa.com',
  age: 11,
  hobbies: ['aa', 'bb']
},(err,doc)=>console.log(err))
userModel.insertMany({
  username: 'user4',
  password: 'user4',
  email: 'aa@aa.com',
  age: 11,
  hobbies: ['aa', 'cc']
},(err,doc)=>console.log(err))
 */
// 修改操作
//userModel.updateMany({ username: 'admin' }, { $set: { age: 22 } }).then(res => console.log(res))

// 删除
// userModel.deleteMany({ username: 'admin' }, err => console.log(err))

// 查询
// 参数1：过滤条件
// 参数2：是否显示的字段 0隐藏 1显示
// 参数3：分页选项
// 参数4：回调
// 返回promise
/* userModel.find({}, { __v: 0 }, { skip: 0, limit: 2 }, (err, rows) => {
  console.log(rows)
}) */
// userModel.find({}, { __v: 0 }, { skip: 0, limit: 2 }).then(docs => console.log(docs))



/* app.get('/', (req, res) => {


  res.send('数据库')
}) */